10 POKE52,PEEK(46)+6:POKE56,PEEK(52):CLR 12 A1$="ABCDEFGHIJKLMNOPQ":A1$=A1$+A1$+A1$+A1$+A1$:A1$=A1$+A1$+A1$ 14 DEF FNH(X)=INT(X/256) 16 DEF FNL(X)=X-256*FNH(X) 18 BL$=" ":C$=CHR$(.) 20 SA=780:SX=781:SY=782:SP=783:POKESA,1:POKESX,8:POKESY,1:SYS 65466 22 POKE53281,0:POKE53280,11:POKE650,128 24 PRINT"[147]"CHR$(142);:GOSUB 116 26 PRINT" CAN PLAY ALL CURRENT SIDPLAYER FILES" 28 PRINT" AS USED WITH KPLAY, MPLAY, SINGALONG" 30 PRINT" AND OTHER COMPARABLE SIDPLAYERS." 32 PRINT" USES SID MUSIC AND RELATED FILE WITH" 34 PRINT" [158].MUS (MUSIC FILES), [153]WITH..." 36 PRINT" [158].WDS (WORD FILES) [153]AND/OR..." 38 PRINT" [158].PIC (KOALA/DOODLE PICTURE FILES)" 40 PRINT " THE BASIC SIDPLAYER IS FROM COMPUTE'S" 42 PRINT " "CHR$(34)"ALL ABOUT THE COMMODORE 64, VOL. TWO"CHR$(34) 44 PRINT " BY CRAIG CHAMBERLAIN" 46 PRINT " [154][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]" 48 PRINT " HIT ANY KEY TO READ DIRECTORY[146][187]" 50 PRINT " [188][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][146][190]" 52 PRINT "[151] (C)1986 OKAY TO COPY, MAY NOT BE SOLD" 54 SS=10752:HK=SS+274:PL=SS+297:DP=SS+471:SV=PEEK(55)+PEEK(56)*256:MA=0 56 GET A$:IF A$="" GOTO 56 58 REM ***** NEXT SCREEN PAGE 60 NP=0 62 PRINT"[147][158][213][192][192][192][192][192][192][192][192][192][192][192][192][178][192][192][192][192][192][192][192][192][192][192][192][192][178][192][192][192][192][192][192][192][192][192][192][192][201][157][157]"CHR$(148)"[192]" 64 FORA=1TO17:PRINT"[221]"SPC(12)"[221]"SPC(12)"[221]"SPC(11)"[221][157]"CHR$(148):NEXT 66 PRINT"[202][192][192][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][192][203][157][157]"CHR$(148)"[192]":GOSUB116 68 PRINT"[154]EXIT: F7  REPLAY: * [221]" 70 PRINT"[154]PLAY ONE:F1/[154]PLAY ALL:F3/[154]NEXT DISK:F5[221]":GOTO 132 72 PRINT"[147][158][213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201][157][157]"CHR$(148)"[192]" 74 FORA=1TO9:PRINT"[221]"SPC(37)"[221][157]"CHR$(148):NEXT 76 PRINT"[171][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][179][157][157]"CHR$(148)"[192]" 78 PRINT"[221] NOTES:F1/NEXTSONG:F3/MENU:F5/EXIT:F7[158][221][157]";CHR$(148)" [158]" 80 PRINT"[171][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][179][157][157]"CHR$(148)"[192]" 82 FOR A=1 TO 5:PRINT"[221]"SPC(37)"[221][157]"CHR$(148):NEXT 84 PRINT"[202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203][157][157]"CHR$(148)"[192]":GOSUB116:RETURN 86 REM ***** MUSIC STAFF DISPLAY 88 A=10496/64 90 POKE53269,31 92 POKE2040,A:POKE2041,A+1:POKE2042,A+2:POKE2043,A+2:POKE2044,A+2 94 POKE53287,1:POKE53288,1 96 POKESS+5,2:POKESS+6,7:POKESS+7,14 98 V=53248:POKEV,40:POKEV+1,111 100 POKEV+2,40:POKEV+3,152 102 POKEV+4,120:POKEV+5,0 104 POKEV+6,185:POKEV+7,0 106 POKEV+8,255:POKEV+9,0 108 PRINT"[155][176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]" 110 FOR A=1 TO 7:IF A=4 THEN PRINT"[221]"SPC(36)"[221]":GOTO 114 112 PRINT"[171][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][179]" 114 NEXT:PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]":RETURN 116 PRINT" [213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]" 118 PRINT" [221] [213][201][154][178][159][176][201] [187][159][178][201][154][178][213][201] V2.5[221] 120 [153]" (null) MID$RIGHT$CONT(null)OPEN(null)(null) SINWAIT OPEN-(null)CONT(null)(null) (null) 122 PRINT" [221] [202][203][154][177][159][173][203][188] [159][177] [154][177][202][203] [221] 124 [153]" (null) CONTTHE SIDPLAYER ART AND MUSIC REVIEW (null) 126 PRINT" [202][192][192][192][192][192][192][192][201] K[159]E[156]RMI[158]T [129]R. [149]W[150]O[152]O[153]D[154]A[155]L[153]L [213][192][192][192][192][192][192][192][192][203]" 128 PRINT"[202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203]":RETURN 130 REM ***** PRINTOUT DIR 132 CL=5:PRINT "" 134 GOTO 356 136 SYS9841: 138 REM ***** GET SONG TITLE 140 SYS9884: 142 LA=SV 144 PRINT"";:F1=FRE(0):F$="":F1=1024+(40*7)+1:V0=7:H0=1 146 POKEF1,PEEK(F1)+128 148 POKEF1,PEEK(F1)-128:F1=1024+(V0*40)+H0:POKEF1,PEEK(F1)+128 150 SYS10689:GET A$:IF A$="" THEN V0=V0+1:IF V0>23 THEN V0=7 152 IF A$="[145]" THEN V0=V0-1:IF V0<7 THEN V0=23 154 IF A$="" THEN H0=H0+13:IF H0>27 THEN H0=1 156 IF A$="[157]" THEN H0=H0-13:IF H0<1 THEN H0=27 158 IF A$="" THEN V0=7:H0=1 160 IF A$="[135]" GOTO 60 162 IF A$="[137]" THEN NP=NP+K:GOTO 62 164 IF A$="[134]" GOTO 196 166 IF A$="[136]" THEN POKE53280,14:POKE 53281,6:PRINT"[147][154]";:END 168 IF A$="*" THEN GOTO 184 170 IF A$=CHR$(13) GOTO 176 172 IF A$=CHR$(141) THEN GOSUB 220:CL=13:GOTO 146 174 IF A$<>"[133]" GOTO 148 176 POKEF1,PEEK(F1)-128 178 SYS9798: 180 POKE198,0:GOSUB 210:GOSUB 232:GOTO 136 182 REM ***** REPLAY LAST MUSIC 184 POKEF1,PEEK(F1)-128:SYS9798: 186 IF MA128 THEN POKEX,PEEK(X)-128 216 NEXT:RETURN 218 REM ***** COLOR NAME 220 POKEF1,PEEK(F1)-128 222 FG=0:FOR X=F1+11 TO F1 STEP-1:A=PEEK(X):IF FG=0 THEN IF A=32 GOTO 226 224 FG=1:POKEX,A+128:POKEX+54272,(PEEK(X+54272)+8) AND 15 226 NEXT:FOR X=F1+11 TO F1 STEP-1:IF PEEK(X)>128 THEN POKEX,PEEK(X)-128 228 NEXT:RETURN 230 REM ***** LOAD MUSIC @FRE MEM 232 IF F$="" THEN RETURN 234 GOSUB 298:GOSUB 326 236 POKE SA,1:POKE SX,8:POKE SY,0:SYS 65466:F$=F$+".MUS":GOSUB 374 238 MA=LA:HI=FNH(MA):LO=FNL(MA) 240 POKE SA,0:POKE SX,LO:POKE SY,HI:SYS 65493:IF PEEK(SP)AND1 GOTO 380 242 REM ***** HOOK INTO INTERRUPT 244 SYS HK:POKE SX,LO:POKE SY,HI:SYS PL:F=PEEK(SX)+256*PEEK(SY):F$="":FS=F 246 IFPIC=1THENSYS9492::GOSUB353:GOTO264 248 IF PIC=2 THENPOKE53265,59:POKE53272,120:POKE56576,PEEK(56576)AND254:GOTO264 250 REM ***** PRINT CREDIT BLOCK 252 F$="":GOSUB72:PRINT"";SPC((40-LEN(T$))/2-1);T$ 254 IF WDS=0 THEN GOSUB 86 256 PRINT"[154]";:P=-1:L=0 258 F=F+P+1:POKE113,FNL(F):POKE114,FNH(F) 260 SYS9760::P=PEEK(142):L=L+1:A=PEEK(F+P) 262 IFL<6THENIF A THENPRINT"";LEFT$(A1$,P+1);:IFMID$(A1$,P+1,1)<>C$GOTO258 264 WAIT 56320,16:POKE 198,0:POKE SS,7 266 REM ***** WAIT UNTIL FINISHED 268 SYS10689:IF PEEK(198) GOTO 284 270 IF WDS THEN GOSUB 406:GOTO 274 272 GOSUB 424 274 IF PEEK(SS)AND 7 GOTO 268 276 GOSUB 292:GOSUB294 278 POKEV+5,0:POKEV+7,0:POKEV+9,0 280 IF A$="[135]" THEN A$="":GOTO 60 282 RETURN 284 GETA$:POKE198,0:POKESS,0 286 IF A$="[133]"THENGOSUB294:T$="":F=FS:PI=0:WD=0:POKESS,7:GOTO252 288 IF A$="[136]"THENGOSUB292:GOSUB294:GOTO136 290 GOTO270 292 POKE53269,0:POKE54276,0:POKE54283,0:POKE54290,0:SYSDP:RETURN 294 SYS9696::RETURN 296 REM ***** LOAD WORD FILE 298 T$="":WD=0:OPEN1,8,8,F$+".WDS,P":GET#1,A$,B$:IF ST THEN CLOSE1:RETURN 300 CLOSE1:WD=1:WA=LA:T$=A$+B$:POKE 679,0 302 F$=F$+".WDS":POKE SA,1:POKE SX,8:POKE SY,0:SYS 65466:GOSUB 374 304 POKE SA,0:POKE SX,FNL(LA):POKE SY,FNH(LA):SYS 65493 306 IF PEEK(SP)AND1 GOTO 380 308 LA=PEEK(SX)+PEEK(SY)*256:WT=WA:FOR A=LA TO LA+5:POKE A,13:NEXT:LA=LA+5 310 F$=LEFT$(F$,LEN(F$)-4):POKE113,FNL(WA):POKE114,FNH(WA) 312 SYS9760::A=PEEK(142) 314 SYS9896::T$=T$+LEFT$(A1$,A) 316 WA=WA+A+1:WT=WA 318 POKE113,FNL(WT):POKE114,FNH(WT) 320 SYS9760::A=PEEK(142) 322 SYS9896::W2$=LEFT$(LEFT$(A1$,A)+BL$,38):WT=WT+A+1 324 RETURN 326 REM ***** CHECK FOR PICTURE 328 PIC=0:OPEN1,8,8,F$+".PIC":GET#1,A$,B$:CLOSE1:A=ASC(B$+C$) 330 IF A=96 THEN PIC=1:A=252:B=192:GOTO 336 332 IF A=92 THEN PIC=2:A=124:B=192:GOTO 336 334 RETURN 336 POKE834,B:POKE835,A:POKE679,55:LO=ASC(A$+C$):HI=ASC(B$+C$):A=LO+(HI*256)-2 338 HI=FNH(A):LO=FNL(A) 340 POKE SA,1:POKE SX,8:POKE SY,1:SYS 65466:F$=F$+".PIC":GOSUB 374 342 POKE SA,0:SYS 65493:IF PEEK(SP)AND1 GOTO 380 344 F$=LEFT$(F$,LEN(F$)-4) 346 IF PIC=1 OR WDS=0 THEN RETURN 348 WT=WA:GOSUB 318:T$=LEFT$(LEFT$(BL$,(40-LEN(T$))/2)+T$+BL$,40) 350 A1$=LEFT$(T$+BL$,80)+LEFT$(A1$,255-80) 352 GOSUB 420:SYS10264:RETURN 353 IF WDS THEN SYS10277:GOTO 348 354 RETURN 355 REM ***** WHAT FILES ON DISK 356 FOR F=1 TO 4:POKE 580+F,ASC(MID$(".MUS",F)):NEXT 358 OPEN 1,8,0,"$0:*=P":GET #1,S$,S$:PRINT "";:TB=1:K=0 360 IF NP>0 THEN POKE2,5:FOR A=1 TO NP:SYS9395::NEXT 362 POKE2,0:SYS9395::TB=TB+13:PRINT TAB(TB);:IF TB=40 THEN TB=1:PRINT ""; 364 IF ST=0 THEN K=K+1:IF K<51 GOTO 362 366 CLOSE 1:SYS 65484:IF K=0 THEN P$="NO MUSIC ON DISK!":GOTO 386 368 IFK=>51THENPRINT""SPC(12)"F2 - NEXT PAGE" 370 GOTO 140 372 REM ***** MUSIC FILE LOADER 374 FOR F=1 TO LEN(F$):POKE 584+F,ASC(MID$(F$,F)):NEXT 376 POKE SA,LEN(F$):POKE SX,73:POKE SY,2:SYS 65469:RETURN 378 REM ***** ERROR MESSAGES 380 P=PEEK(SA):P$="ERROR: ":IF P=4 THEN P$=P$+"FILE NOT FOUND":GOTO 386 382 IF P=5 THEN P$=P$+"DEVICE NOT PRESENT":GOTO 386 384 P$=P$+STR$( ST ):GOTO 386 386 GOSUB294 388 A=LEN(P$):S=19-(A/2):A$="[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]" 390 PRINT "[147]";SPC(S);"[213]";LEFT$(A$,A);"[201]" 392 PRINT SPC(S);"[221]";P$;"[221]" 394 PRINT SPC(S);"[202]";LEFT$(A$,A);"[203]" 396 PRINT SPC(20-4);"[145][179]RETURN[171]":FOR B=1 TO 500:NEXT 398 PRINT SPC(20-4);"[145][192][192][192][192][192][192][192][192]":FOR B=1 TO 500:NEXT 400 GET A$:IF A$<>CHR$(13) GOTO 396 402 RUN 404 REM ***** DISPLAY WORDS 406 IF PEEK(SS+1)<1 THEN RETURN 408 W1$=W2$:POKE113,FNL(WT):POKE114,FNH(WT) 410 SYS9760::A=PEEK(142) 412 SYS9896::WT=WT+A+1 414 W2$=LEFT$(LEFT$(A1$,A)+BL$,38) 416 IF PIC=0 THEN PRINT"[153]";W1$:PRINT"";W2$:POKE SS+1,0:RETURN 418 A1$=W1$+" "+W2$+" "+LEFT$(A1$,255-80) 420 POKE 2,80:SYS10187 422 POKE SS+1,0:RETURN 424 REM ***** MUSIC ONLY DISPLAY 426 SYS10031 428 RETURN 430 : 432 END